﻿Imports EstoqueBLL
Imports VendasBLL
Imports ModuloEstoque
Public Class OrdemProdutosFRM
    Dim ObjPeca As PECABLL
    Dim ObjServico As ServicoBLL
    Dim ObjBLL As OrdemServicoBLL
    Dim ObjBLL2 As VendaBLL
    Public CodOrdem, ProCodigo, VenCodigo As Integer
    Public Insere, Op, Tabela As String
    Dim Status As Integer

#Region "Métodos"
    Sub CarregaPeca()
        TXTCodBarras.Text = ObjPeca.pec_codbarra
        TXTCodigo.Text = ObjPeca.pro_codigo
        TXTQtdeDisponivel.Text = ObjPeca.pec_qtde
        TXTDescricao.Text = ObjPeca.pro_descricao
        TXTValUnitario.Text = FormatCurrency(ObjPeca.pro_precovenda)
        TXTValTotal.Text = FormatCurrency(ObjPeca.pro_precovenda)
        TXTQuantidade.Text = 1
        ObjPeca.limpar()
    End Sub

    Sub CarregaServico()
        TXTCodBarras.Text = ""
        TXTCodigo.Text = ObjServico.pro_codigo
        TXTQtdeDisponivel.Text = ""
        TXTDescricao.Text = ObjServico.pro_descricao
        TXTValUnitario.Text = FormatCurrency(ObjServico.pro_precovenda)
        TXTValTotal.Text = FormatCurrency(ObjServico.pro_precovenda)
        ObjServico.limpar()
    End Sub

    Sub Limpa()

        TXTCodBarras.Text = ""
        TXTQtdeDisponivel.Text = ""
        TXTDescricao.Text = ""
        TXTValTotal.Text = "R$ 0.00"
        TXTValUnitario.Text = "R$ 0.00"
        TXTDesReais.Text = "R$ 0.00"
        TXTQuantidade.Text = ""
        TXTCodigo.Text = ""
        TSBProduto.Visible = True
        TSBServico.Visible = True
        TSBSalvar.Visible = False
    End Sub

    Sub AtualizaValor()

     

        Dim ValorTotal, ValorDesc, ValorUnitario As Decimal
        Dim Qtde As Integer

        If (Decimal.TryParse(TXTDesReais.Text.Replace("R$", ""), ValorDesc)) Then
        Else : ValorDesc = "0,00"
        End If

        If (Decimal.TryParse(TXTValUnitario.Text.Replace("R$", ""), ValorUnitario)) Then
        Else : ValorUnitario = "0,00"
        End If

        If (Integer.TryParse(TXTQuantidade.Text, Qtde)) And Qtde > 0 Then
        Else : Qtde = 1
        End If

        ValorTotal = ValorUnitario * Qtde
        If (ValorTotal > ValorDesc) Then
            ValorTotal = ValorTotal - ValorDesc
        Else : Throw New Exception("Desconto maior que valor total")
        End If

        If Status <> 10 Then
            If (Qtde <= Val(TXTQtdeDisponivel.Text)) Then
            Else : Throw New Exception("Quantidade indisponível")
            End If
        End If

        TXTQuantidade.Text = Qtde
        TXTDesReais.Text = ValorDesc
        TXTValTotal.Text = ValorTotal
        TXTValTotal.Text = FormatCurrency(TXTValTotal.Text)
        TXTDesReais.Text = FormatCurrency(TXTDesReais.Text)
    End Sub

    Sub CarregaCampos()
        If (Tabela = "Venda") Then
            ObjBLL2 = New VendaBLL(VenCodigo, ProCodigo)
            ObjBLL2.RetItem()
            TXTValUnitario.Text = ObjBLL2.ValorUnitario
            TXTQuantidade.Text = ObjBLL2.Qtde
            TXTDesReais.Text = ObjBLL2.Desconto
            If ObjBLL2.CodStatus = 10 Then
                ObjServico = New ServicoBLL(ObjBLL2.ProCodigo)
                CarregaServico()
                Status = 10
            Else
                ObjPeca = New PECABLL()
                ObjPeca.carregaproduto(ProCodigo)
                TXTCodigo.Text = ObjPeca.pro_codigo
                TXTCodBarras.Text = ObjPeca.pec_codbarra
                TXTDescricao.Text = ObjPeca.pro_descricao
                TXTQtdeDisponivel.Text = ObjPeca.pec_qtde + Val(TXTQuantidade.Text)
                ObjPeca.limpar()
            End If
        Else
            ObjBLL = New OrdemServicoBLL(CodOrdem, ProCodigo)
            ObjBLL.RetItem()
            TXTValUnitario.Text = ObjBLL.ValorUnitario
            TXTQuantidade.Text = ObjBLL.Qtde
            TXTDesReais.Text = ObjBLL.Desconto
            If ObjBLL.CodStatus = 10 Then
                ObjServico = New ServicoBLL(ObjBLL.ProCodigo)
                CarregaServico()
                Status = 10
            Else
                ObjPeca = New PECABLL()
                ObjPeca.carregaproduto(ProCodigo)
                TXTCodigo.Text = ObjPeca.pro_codigo
                TXTCodBarras.Text = ObjPeca.pec_codbarra
                TXTDescricao.Text = ObjPeca.pro_descricao
                TXTQtdeDisponivel.Text = ObjPeca.pec_qtde + Val(TXTQuantidade.Text)
                ObjPeca.limpar()
            End If
        End If

        AtualizaValor()
        ' ObjBLL.Limpar()
        TSBSalvar.Visible = True
        TSBProduto.Visible = False
        TSBServico.Visible = False
    End Sub

#End Region

#Region "Eventos"


#Region "Load"
    Private Sub OrdemProdutosFRM_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Limpa()
        If Op = "A" Then

            CarregaCampos()
            GBPreco.Enabled = True
            TSBProduto.Visible = False
            TSBServico.Visible = False
        End If
    End Sub
#End Region

#Region "TextBox Quantidade"

    Private Sub TXTQuantidade_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TXTQuantidade.KeyPress
        If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack Then
            e.Handled = True
        End If
        If e.KeyChar = Convert.ToChar(Keys.Return) Then
            TXTDesReais.Select()
        End If

    End Sub

    Private Sub TXTQuantidade_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TXTQuantidade.MouseUp
        TXTQuantidade.SelectAll()
    End Sub

    Private Sub TXTQuantidade_Leave(sender As System.Object, e As System.EventArgs) Handles TXTQuantidade.Leave
        Try

            AtualizaValor()
            TXTDesReais.Focus()
            
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)
            TXTQuantidade.Text = 1
        End Try

    End Sub

#End Region

#Region "TextBox Desconto (R$)"
    Private Sub TXTDesReais_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TXTDesReais.KeyPress
        If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack Then
            e.Handled = True
        End If
        If (TXTDesReais.Text.Contains(",") = False And e.KeyChar = ",") Then
            e.Handled = False
        End If
        If e.KeyChar = Convert.ToChar(Keys.Return) Then
            TSBSalvar.Select()
            AtualizaValor()
        End If
    End Sub

    Private Sub TXTDesReais_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles TXTDesReais.MouseUp
        TXTDesReais.SelectAll()
    End Sub

    Private Sub TXTDesReais_Leave(sender As System.Object, e As System.EventArgs) Handles TXTDesReais.Leave
        Try
            AtualizaValor()
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)
            TXTDesReais.Text = "R$ 0,00"
        End Try

    End Sub
#End Region

#Region "Fechar formulário com esc"
    Private Sub OrdemProdutosFRM_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
        If (e.KeyCode = Keys.Escape) Then
            Insere = ""
            Me.Close()
        End If
    End Sub
#End Region

    Private Sub TXTQuantidade_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles TXTQuantidade.KeyDown
        If (e.KeyCode = Keys.Enter) Then
            SendKeys.Send("{TAB}")
        End If
    End Sub

#End Region

#Region "Botões"

#Region "Localiza Produto"
    Private Sub TSBProduto_Click(sender As System.Object, e As System.EventArgs) Handles TSBProduto.Click
        Dim ObjPe As New PecaCON
        ObjPe.tipo = "ret"
        ObjPe.OrdCodigo = CodOrdem
        ObjPe.VenCodigo = VenCodigo
        ObjPe.ShowDialog()
        If (Not IsNothing(ObjPe.objprod)) Then
            ObjPeca = ObjPe.objprod
            CarregaPeca()
            GBPreco.Enabled = True
            TXTQuantidade.Focus()
            TXTQuantidade.Text = 1
            Status = 11
            TSBSalvar.Visible = True
        End If
        ObjPe.objprod = Nothing
        ObjPe = Nothing
        ObjPeca = Nothing
    End Sub
#End Region

#Region "Localiza Serviço"
    Private Sub TSBServico_Click(sender As System.Object, e As System.EventArgs) Handles TSBServico.Click
        Dim ObjS As New ServicoCON
        ObjS.tipo = "ret"
        ObjS.OrdCodigo = CodOrdem
        ObjS.VenCodigo = VenCodigo
        ObjS.ShowDialog()
        If (Not IsNothing(ObjS.objprod)) Then
            ObjServico = ObjS.objprod
            CarregaServico()
            GBPreco.Enabled = True
            TXTQuantidade.Focus()
            TXTQuantidade.Text = 1
            Status = 10
            TSBSalvar.Visible = True
        End If
        ObjS.objprod = Nothing
        ObjS = Nothing
        ObjServico = Nothing
    End Sub
#End Region

#Region "Voltar"
    Private Sub TSBVoltar_Click(sender As System.Object, e As System.EventArgs) Handles TSBVoltar.Click
        Insere = ""
        Me.Close()
    End Sub
#End Region

#Region "Salvar"
    Private Sub TSBSalvar_Click(sender As System.Object, e As System.EventArgs) Handles TSBSalvar.Click
        Try
            AtualizaValor()
            If (Tabela = "Venda") Then
                Dim ObjBLL2 = New VendaBLL(TXTCodigo.Text, TXTQuantidade.Text, Decimal.Parse(TXTValUnitario.Text.Replace("R$", "")), Decimal.Parse(TXTDesReais.Text.Replace("R$", "")), VenCodigo, TXTValTotal.Text.Replace("R$", ""), Status)
                If Op = "A" Then
                    ObjBLL2.IAEItens("A")
                Else
                    ObjBLL2.IAEItens("I")
                    Insere = "+"
                End If
            Else
                Dim ObjBLL = New OrdemServicoBLL(TXTCodigo.Text, TXTQuantidade.Text, Decimal.Parse(TXTValUnitario.Text.Replace("R$", "")), Decimal.Parse(TXTDesReais.Text.Replace("R$", "")), CodOrdem, TXTValTotal.Text.Replace("R$", ""), Status)
                If Op = "A" Then
                    ObjBLL.IAEItens("A")
                Else
                    ObjBLL.IAEItens("I")
                    Insere = "+"
                End If
            End If
            Limpa()
            Me.Close()

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Try

    End Sub
#End Region
#End Region

End Class